# -*- coding: UTF-8 -*-
'''
Created on 8 de Dez de 2011
@author: Francisco do Ó
@number: 5202
'''

import numpy as np #importa biblioteca numpy
import pylab as plt #importa pylab
import PyModel #importa o Módulo PyModel


'''
@param nome_estab
Recebe o nome de um estabelecimento de ensino como parâmetro de entrada
Procura o número de professores nesse estabelecimento, entre os anos 2000 e 2010
'''
def plotQueryOne(nome_estab):
    ocur = 0 #ocorrências
    results=[] #lista que terá os resultados
    #De 2000 a 2010
    for i in range (2000,2010+1):
        #Procura ocorrências nos indices relevantes
        for row in PyModel.one_total:
            print row[0]
            if str(row[0].decode('UTF-8')) == str(nome_estab) and str(row[1].decode('UTF-8'))  == str(i):
                ocur = ocur + 1 
                pass
            pass
        #adiciona linha à lista com os resultados
        results.append(ocur)
        ocur = 0
        pass   
    data = [("2000", results[0]), ("2001", results[1]),("2002", results[2]), ("2003", results[3]),
            ("2004", results[4]), ("2005", results[5]),("2006", results[6]), ("2007", results[7]),
            ("2008", results[8]), ("2009", results[9]),("2010", results[10])]
    #Envia lista com pares ano-resultado e nome de estabelecimento para o método showPlot
    showPlot(data , nome_estab)

'''
@param nome_estab
@param category
Recebe o nome de um estabelecimento de ensino e uma categoria como parâmetros de entrada
Procura o número de professores com essa categoria, nesse estabelecimento, entre os anos 2000 e 2010
'''
def plotQueryTwo(nome_estab,category):
    ocur = 0 #ocorrências
    results=[] #lista que terá os resultados
    #De 2000 a 2010
    for i in range (2000,2010+1):
        #Procura ocorrências nos indices relevantes
        for row in PyModel.two_total:
            print row
            if str(row[0].decode('UTF-8')) == str(nome_estab)\
             and  str(row[1].decode('UTF-8')) == str(category)\
              and str(row[2].decode('UTF-8'))  == str(i):
                ocur = ocur + 1 
                pass
            pass
        #adiciona linha à lista com os resultados
        results.append(ocur)
        ocur = 0
        pass 
    #print results           
    data = [("2000", results[0]), ("2001", results[1]),("2002", results[2]), ("2003", results[3]),
            ("2004", results[4]), ("2005", results[5]),("2006", results[6]), ("2007", results[7]),
            ("2008", results[8]), ("2009", results[9]),("2010", results[10])]
    #Envia lista com pares ano-resultado e nome de estabelecimento para o método showPlot
    showPlot(data , nome_estab)

'''
@param nome_estab
@param degree
Recebe o nome de um estabelecimento de ensino e um grau como parâmetros de entrada
Procura o número de professores com esse grau, nesse estabelecimento, entre os anos 2000 e 2010
'''    
def plotQueryThree(nome_estab,degree):
    ocur = 0 #ocorrências
    results=[] #lista que terá os resultados
    #De 2000 a 2010
    for i in range (2000,2010+1):
        #Procura ocorrências nos indices relevantes
        for row in PyModel.three_total:
            if str(row[0].decode('UTF-8')) == str(nome_estab)\
             and str(row[1].decode('UTF-8')) == str(degree)\
              and str(row[2].decode('UTF-8'))  == str(i):
                ocur = ocur + 1 
                pass
            pass
        #adiciona linha à lista com os resultados
        results.append(ocur)
        ocur = 0
        pass           
    data = [("2000", results[0]), ("2001", results[1]),("2002", results[2]), ("2003", results[3]),
            ("2004", results[4]), ("2005", results[5]),("2006", results[6]), ("2007", results[7]),
            ("2008", results[8]), ("2009", results[9]),("2010", results[10])]
    #Envia lista com tuplas ano,resultado e nome de estabelecimento para o método showPlot
    showPlot(data , nome_estab)    

'''
@param data 
@param nome_estab
Recebe data que contém tuplas ano,resultado e nome de estabelecimento
Processa a informação de forma a obter o gráfico pretendido.
'''
def showPlot(data , nome_estab):
    #configuração de dimensões
    N = len(data)
    width = 0.9
    x = (np.arange(0 , N)) 
    #insere valores consoante a informação recebida
    y = [ num for (s, num) in data ]
    #insere as labels consoante a informação recebida
    labels = [ s for (s, num) in data ]    
    bar = plt.bar( x, y, width, color="b" )
    plt.title("" + nome_estab)
    plt.ylabel('Numero de Professores')
    plt.xlabel('Ano Lectivo')
    plt.xticks(x + width/2.0, labels )
    #Mostra o gráfico
    plt.show()

PyModel.main()